#include "game_map_mgr.h"

#include <memory>

#include "game_map.h"
#include "map_config.h"
#include "log.h"


GameMapMgr::GameMapMgr(/* args */)
{
}

GameMapMgr::~GameMapMgr()
{
}

GameMapMgr& GameMapMgr::GetInstance(){
    static GameMapMgr ins;
    return ins;
}

std::shared_ptr<GameMap> GameMapMgr::AddNewMap(int map_type_id, int map_unique_id){
    auto& map = maps_[map_type_id];
    auto it = map.find(map_unique_id);
    if(it != map.end()){
        LOG_DEBUG("已经有map_type_id:{}, map_unique_id:{}", map_type_id, map_unique_id);
        return it->second;
    }

    auto map_obj = std::make_shared<GameMap>(map_type_id, map_unique_id);
    map_obj->Init(map_config::SCENE_LENGTH, map_config::SCENE_WIDTH);
    map.emplace(map_unique_id, map_obj);

    return map_obj;
}
std::shared_ptr<GameMap> GameMapMgr::GetMap(int map_type_id, int map_unique_id){
    auto& map = maps_[map_type_id];
    auto it = map.find(map_unique_id);
    if(it == map.end()){
        LOG_DEBUG("没有找到map_type_id:{}, map_unique_id:{}", map_type_id, map_unique_id);
        return nullptr;
    }

    return it->second;
}
void GameMapMgr::DeleteMap(int map_type_id, int map_unique_id){
    auto& map = maps_[map_type_id];
    map.erase(map_unique_id);
}